package com.blood.modules.pregnancy.service;

import com.blood.core.config.mybatisplus.ICommonService;
import com.blood.core.resp.PageResult;
import com.blood.core.resp.ResponseResult;
import com.blood.modules.pregnancy.dto.req.PregnancyAbnormalGatherInfoReq;
import com.blood.modules.pregnancy.dto.req.PregnancyGatherInfoPageReq;
import com.blood.modules.pregnancy.dto.req.PregnancyGatherInfoReq;
import com.blood.modules.pregnancy.dto.req.PregnancyGatherInfoSaveReq;
import com.blood.modules.pregnancy.dto.req.PregnancyGatherOverSaveReq;
import com.blood.modules.pregnancy.dto.resp.*;
import com.blood.modules.pregnancy.model.PregnancyGatherInfo;

import java.util.List;


/**
 * 孕妇信息采集Service接口
 *
 * @author daoren
 * @date 2022-11-25 09:00:10
 */
public interface IPregnancyGatherInfoService extends ICommonService<PregnancyGatherInfo> {

    /**
     * 采集信息分页查询
     *
     * @param req 查询参数
     * @return 分页列表信息
     */
    ResponseResult<PageResult<PregnancyGatherListResp>> gatherPageList(PregnancyGatherInfoPageReq req);

    /**
     * 异常信息分页查询
     *
     * @param req 查询参数
     * @return 分页列表信息
     */
    ResponseResult<PageResult<PregnancyGatherInfoPageResp>> pageList(PregnancyGatherInfoPageReq req);

    /**
     * 获取列表
     *
     * @param pregnancyIdList 孕产id
     * @return 列表信息
     */
    List<PregnancyGatherInfo> queryList(List<String> pregnancyIdList);

    /**
     * 添加
     *
     * @param req
     * @return 结果
     */
    ResponseResult<PregnancyGatherSaveResp> saveInfo(PregnancyGatherInfoSaveReq req);


    /**
     * 撤销采集信息
     *
     * @param gatherId 采集信息id
     * @return 结果
     */
    ResponseResult<Void> revocation(String gatherId);

    /**
     * 查询异常信息
     *
     * @param gatherId 采集id
     * @return 异常信息
     */
    ResponseResult<PregnancyGatherResp> getAbnormalInfo(String gatherId);

    /**
     * 处理或录入异常信息
     *
     * @param req
     * @return 结果
     */
    ResponseResult<Void> delAdd(PregnancyAbnormalGatherInfoReq req);

    /**
     * 完结信息录入
     *
     * @param req
     * @return 结果
     */
    ResponseResult<Void> overAdd(PregnancyGatherOverSaveReq req);
    /**
     * 获取采集信息页面数据
     *
     * @param req
     * @return 详情
     */
    ResponseResult<PregnancyGatherInfoResp> getInfo(PregnancyGatherInfoReq req);

    /**
     * 根据id获取详情
     *
     * @param id
     * @return 详情
     */
    ResponseResult<PregnancyGatherDetailInfoResp> findDetailById(String id);
}
